module("booter.base.logger", package.seeall)

--[[
    重新定义日志打印规则：
    信息和警告不输出堆栈信息，
    错误和异常才输出堆栈信息
    如果打印中要附加堆栈信息，自行在msg后面加 debug.traceback
]]

function concatMsg(...)
    local msg = {...}
    return table.concat(msg, " ")
end

--给log添加堆栈信息
function _addTraceback(...)
    local log = concatMsg(...)
    log = log..debug.traceback("", 2)
    return log
end

--打印信息
function logNormal(...)
    local msg = concatMsg(...)
    if canLogNormal and msg then
        print(msg)
    end
end

--打印警告
function logWarn(...)
    local msg = concatMsg(...)
    if canLogWarn and msg then
        printWarn(msg)
    end
end

--打印错误和异常
function logError(...)
    if canLogError then 
        printError(_addTraceback(...))
    end
end

--强制输出日志，用来调试release包时，强行输出log
function forceLog(...)
    local msg = ...
    forcePrint(msg)
end

setGlobal("logNormal", logNormal)
setGlobal("logWarn", logWarn)
setGlobal("logError", logError)
setGlobal("forceLog", forceLog)